#ifndef __BOXSTUCKFILER_H__
#define __BOXSTUCKFILER_H__

#include "filter.h"
#include <iostream>

namespace AI_SOKOBAN
{
class BoxStuckfilter : public Filter
{
	public:
		BoxStuckfilter(const Level& level);
		virtual double evalLevel(const Level& level, const Move& move);
		bool isBoxStuck(int x, int y) const;
	private:
		bool isBoxStuck2(int x, int y, bool* visited,bool axis) const;
		bool isBoxStuck(int x, int y, int orgX, int orgY, int calls) const;
		bool isBoxStuck(std::pair<int,int>p,std::pair<int,int>org, int calls) const;

		bool* m_visited;

		Level my_level;
};
}

#endif